Skip to content

feat(logs): max template size limit + json_as_raw raw bypass#49552

Draft
DDuongNguyen wants to merge 2 commits into
jsaf/evict-correctlyfrom
yoon/max-template-raw-bypass
Draft

feat(logs): max template size limit + json_as_raw raw bypass#49552
DDuongNguyen wants to merge 2 commits into
jsaf/evict-correctlyfrom
yoon/max-template-raw-bypass

Conversation

@DDuongNguyen
Copy link
Copy Markdown
Contributor

What does this PR do?

Motivation

Describe how you validated your changes

Additional Notes

Copy link
Copy Markdown
Contributor Author

DDuongNguyen commented Apr 17, 2026

@agent-platform-auto-pr
Copy link
Copy Markdown
Contributor

agent-platform-auto-pr Bot commented Apr 17, 2026

Go Package Import Differences

Baseline: 228994b
Comparison: ed5c750

binaryosarchchange
agentlinuxamd64
+11, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust/flatbuffers/patterns
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
+github.com/google/flatbuffers/go
agentlinuxarm64
+11, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust/flatbuffers/patterns
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
+github.com/google/flatbuffers/go
agentwindowsamd64
+11, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust/flatbuffers/patterns
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
+github.com/google/flatbuffers/go
agentdarwinamd64
+11, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust/flatbuffers/patterns
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
+github.com/google/flatbuffers/go
agentdarwinarm64
+11, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust/flatbuffers/patterns
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
+github.com/google/flatbuffers/go
agentaixppc64
+11, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust/flatbuffers/patterns
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
+github.com/google/flatbuffers/go
iot-agentlinuxamd64
+9, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
iot-agentlinuxarm64
+9, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
heroku-agentlinuxamd64
+11, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust/flatbuffers/patterns
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
+github.com/google/flatbuffers/go
cluster-agentlinuxamd64
+9, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
cluster-agentlinuxarm64
+9, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
cluster-agent-cloudfoundrylinuxamd64
+1, -0
+github.com/DataDog/agent-payload/v5/statefulpb
cluster-agent-cloudfoundrylinuxarm64
+1, -0
+github.com/DataDog/agent-payload/v5/statefulpb
dogstatsdlinuxamd64
+1, -0
+github.com/DataDog/agent-payload/v5/statefulpb
dogstatsdlinuxarm64
+1, -0
+github.com/DataDog/agent-payload/v5/statefulpb
process-agentlinuxamd64
+1, -0
+github.com/DataDog/agent-payload/v5/statefulpb
process-agentlinuxarm64
+1, -0
+github.com/DataDog/agent-payload/v5/statefulpb
process-agentwindowsamd64
+1, -0
+github.com/DataDog/agent-payload/v5/statefulpb
process-agentdarwinamd64
+1, -0
+github.com/DataDog/agent-payload/v5/statefulpb
process-agentdarwinarm64
+1, -0
+github.com/DataDog/agent-payload/v5/statefulpb
heroku-process-agentlinuxamd64
+1, -0
+github.com/DataDog/agent-payload/v5/statefulpb
security-agentlinuxamd64
+10, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
+github.com/DataDog/datadog-agent/pkg/trace/log
security-agentlinuxarm64
+10, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
+github.com/DataDog/datadog-agent/pkg/trace/log
security-agentwindowsamd64
+10, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
+github.com/DataDog/datadog-agent/pkg/trace/log
system-probelinuxamd64
+10, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
+github.com/DataDog/datadog-agent/pkg/trace/log
system-probelinuxarm64
+10, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
+github.com/DataDog/datadog-agent/pkg/trace/log
system-probewindowsamd64
+10, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
+github.com/DataDog/datadog-agent/pkg/trace/log
system-probedarwinamd64
+10, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
+github.com/DataDog/datadog-agent/pkg/trace/log
system-probedarwinarm64
+10, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
+github.com/DataDog/datadog-agent/pkg/trace/log
otel-agentlinuxamd64
+9, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
otel-agentlinuxarm64
+9, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
privateactionrunnerlinuxamd64
+1, -0
+github.com/DataDog/agent-payload/v5/statefulpb
privateactionrunnerlinuxarm64
+1, -0
+github.com/DataDog/agent-payload/v5/statefulpb
privateactionrunnerwindowsamd64
+1, -0
+github.com/DataDog/agent-payload/v5/statefulpb
privateactionrunnerdarwinamd64
+1, -0
+github.com/DataDog/agent-payload/v5/statefulpb
privateactionrunnerdarwinarm64
+1, -0
+github.com/DataDog/agent-payload/v5/statefulpb

@agent-platform-auto-pr
Copy link
Copy Markdown
Contributor

agent-platform-auto-pr Bot commented Apr 17, 2026

Files inventory check summary

File checks results against ancestor a9034095:

Results for datadog-agent_7.79.0~devel.git.459.3865993.pipeline.108330740-1_amd64.deb:

Detected file changes:

1 Added files:

  • opt/datadog-agent/embedded/lib/libpatterns.so (1.62 MiB)

DDuongNguyen and others added 2 commits May 14, 2026 13:55
Two safety valves that prevent stateful encoding state bloat:

**logs_config.patterns.max_template_bytes (default: 1024)**
Rejects logs whose raw token content exceeds this byte threshold,
sending them as RawLog datums instead of creating pattern state.
Fixes snapshot bloat from huge one-off logs (e.g. AWS instance metadata
dumps ~900KB each → ~8MB snapshot overhead from 9 patterns).
Returns PatternTooLarge from ClusterManager.Add so the caller never
dereferences a nil pattern.

**logs_config.patterns.json_as_raw (default: false)**
When true, JSON logs bypass stateful encoding entirely (no preprocessing,
no tokenization, no clustering) and are sent as RawLog datums. Eliminates
PreprocessJSON + tokenization + clustering cost for JSON-heavy workloads.
Trade-off: no pattern compression; transport-level compression still applies.
Useful for A/B testing CPU vs wire efficiency in staging.

Both features route to the existing sendRawLog path in both the batch
pipeline (processBatch) and single-message path (processMessage).

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
UseNumber in json.Unmarshal so numbers stay as json.Number (string)
instead of float64. Without this, integers larger than 2^53 (trace IDs,
span IDs, snowflake IDs) silently lose precision through the
unmarshal/marshal round-trip — e.g. 9999999999999999 becomes
10000000000000000.
@TheSafo TheSafo force-pushed the jsaf/evict-correctly branch from 6a19a73 to f229313 Compare May 15, 2026 17:25
@TheSafo TheSafo force-pushed the yoon/max-template-raw-bypass branch from 0bb9291 to ed5c750 Compare May 15, 2026 17:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant